package vip.liux.backend.application.service.coupon;

import jakarta.validation.constraints.*;
import lombok.Data;
import vip.liux.contracts.shared.enums.coupon.CouponType;
import vip.liux.contracts.shared.enums.coupon.UseScope;
import vip.liux.contracts.shared.enums.coupon.UseType;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;


@Data
public class AbsCouponDto {
    /**
     * 消费商品名称
     */
    @NotBlank
    private String couponName;

    /**
     * 优惠券类型 0立减券 1折扣券
     */
    private CouponType couponType;

    /**
     * 优惠金额
     */
    @DecimalMin(value = "0.00")
    private BigDecimal amount;

    /**
     * 折扣券-折扣率(0-1.00)
     */
    @DecimalMin(value = "0.00")
    @DecimalMax(value = "1.00")
    private BigDecimal discount;

    /**
     * 使用门槛(0无门槛 1满金额可用)
     */
    private UseType useType;

    /**
     * 满减条件
     */
    private BigDecimal full;

    /**
     * 优惠券描述
     */
    private String describe;

    /**
     * 使用开始时间
     */
    @NotNull
    private LocalDateTime useStart;

    /**
     * 使用截止时间
     */
    @NotNull
    private LocalDateTime useEnd;

    /**
     * 使用范围，0全品，1部分商品
     */
    private UseScope useScope;

    /**
     * 暂定为商品ID集合，后续可能会有分类id集合
     */
    private Map<String, Object> scopeConfig = new HashMap<>();

    /**
     * 排序方式(数字越小越靠前)
     */
    @Min(value = 1)
    private Integer sort;
}
